/*# 8 月 17 日课后作业

## 选择题

1. 以下哪个不是 C++ 的标准：A

A. C++18

B. C++11

C. C++17

D. C++20

2. 一个 32 位整数占用 () 个字节：A

A. 4

B. 32

C. 8

D. 16

3. 假设有 100 个已经排序好的数字，采用折半查找时， 最大的比较次数是：C

A. 10

B. 6

C. 7

D. 8

4. 319 和 377 的最大公约数是：C

A. 27

B. 33

C. 29

D. 31

5. 一副扑克牌除去大小王之后还剩四种花色的牌一共 52 张，每种花色 13 张。假设从这 52 张中随机抽取 13 张纸牌，那么至少有（A）张纸牌的花色是一样的。

A. 4

B. 2

C. 3

D. 5


## 填空题

1. 二进制数字 1001 0111 和 1110 1011 进行按位与运算的结果是：1000 0011____________

2. 计算机内存中，每个存储单元都被赋予一个唯一的编号，我们管这个编号叫做：地址_________________

3. C++ 编译器的主要功能是：把一种高级语言翻译成一种机器指令_________________________________

4. 一张 1920x1080 分辨率的 32 位真彩色图片，存储这张图片需要 大约8 MB 的硬盘空间。


## 算法题

> 回忆一下我们上课讲过的 Tandem Bicycle 算法，尝试完成以下问题：

小王的班级正在组织照相，老师把班级里的学生分成**人数相同的两组**，一组穿红色上衣，另一组穿蓝色上衣。摄影师到场之后，他提出了三个条件：

* 红色上衣的人必须站一行；
* 蓝色上衣的人必须张一行；
* 红蓝不能交叉站一行；
* 站在前面一排的每个人，必须比后排的每一个人矮；

编写一个函数 `checkPhoto`，它接受两个参数，分别表示红、蓝两组学生的身高，并返回这两组学生是否可以满足摄影师的要求。

示例：

* `redHeights` 等于 `[5, 8, 1, 3, 4]`
* `blueHeights` 等于 `[6, 9, 2, 4, 5]`

此时，我们只要让红衣服站在前排，蓝衣服站在后排，就可以照相了，因此：`checkPhoto` 应该返回 `true`。*/

#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

bool checkPhoto(vector<int> red, vector<int> blue){    
    sort(red.begin(), red.end());
    sort(blue.begin(), blue.end());

    if(red.size() != blue.size())
        return false;

    int result = 0;

    for (int x=0, y=0; x < red.size(); x++, y++){
        if (red[x] < blue[y]){
            result++;
        }
    }

    if(result==red.size())
        return true;

    result = 0;

    for (int x=0, y=0; x < red.size(); x++, y++){
        if (red[x] > blue[y]){
            result++;
        }
    }

    if(result==red.size())
        return true;
    
    return false;
}

bool checkPhoto(vector<int> red, vector<int> blue){    
    sort(red.begin(), red.end());
    sort(blue.begin(), blue.end());

    if(red.size() != blue.size())
        return false;

    int x=0;
    int y=0;
    if (red[x] > blue[y]){
        x=x+1;
        y=y+1;
        for (; x < red.size(); x++, y++){
            if (red[x] <= blue[y]){
                return false;
            }
        }
        return true;        
    }
    else if (red[x] < blue[y]){
        x=x+1;
        y=y+1;
        for (; x < red.size(); x++, y++){
            if (red[x] >= blue[y]){
                return false;
            }
        }
        return true;
    }
    else if (red[x] = blue[y]){
        return false;
    }
    


}

int main(int argc, char const *argv[])
{
    
    return 0;
}





